#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent):
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    /*连接数据库*/
    Login = QSqlDatabase::addDatabase("QMYSQL");
    Login.setHostName("localhost");
    Login.setUserName("root");
    Login.setPassword("");
    Login.setDatabaseName("petmanage");
    if(Login.open())
    {
        QMessageBox::information(this, "连接提示", "数据库连接成功啦！٩(◕‿◕｡)۶");
    }
    else
    {
        QMessageBox::warning(this, "连接提示", "数据库连接失败啦！(▼皿▼#)");
    }

    /*在这里写connect()函数用于关联信号与槽 参数(谁发出信号 发出什么信号 谁处理信号 怎么处理信号)*/
    /*AccountInputbox发出信号 发出returnPressed()信号 this指针处理信号 调用on_LoginButton_clicked()函数处理信号*/
    connect(ui->AccountInputbox, SIGNAL(returnPressed()), this, SLOT(on_LoginButton_clicked()));
    /*CancelButton发出信号 发出clicked信号 this指针处理信号 调用on_CancelButton_clicked()函数处理信号*/
    connect(ui->CancelButton, &QPushButton::clicked, this, &Widget::on_CancelButton_clicked);

    /*在label标签里面显示图片 QPixmap 类对象名("图片路径"); 图片路径里面的 \ 要写成 \\*/
    QPixmap Startpagepicture("C:\\Users\\26057\\Desktop\\Qt code\\Test 002\\sample002\\logo.jpg");
    /*ui->定义的label标签的名字->setPixmap(类对象名)；*/
    ui->StartpagePic->setPixmap(Startpagepicture);
    ui->StartpagePic->setStyleSheet(
        "QLabel {"
        "   border: 5px solid white;"
        "}"
        );

    /*访问AccountInputbox PasswordInputbox组件 将提示文字与输入文字居中放置*/
    ui->AccountInputbox->setAlignment(Qt::AlignCenter);
    ui->PasswordInputbox->setAlignment(Qt::AlignCenter);
    /*显示提示文字*/
    ui->AccountInputbox->setPlaceholderText("请输入账号");
    ui->PasswordInputbox->setPlaceholderText("请输入密码");
    /*提示文字颜色*/
    ui->AccountInputbox->setStyleSheet("QLineEdit::placeholder{color:#999999;}");
    ui->PasswordInputbox->setStyleSheet("QLineEdit::placeholder{color:#999999;}");

    ui->PasswordInputbox->setEchoMode(QLineEdit::Password);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_LoginButton_clicked()
/*在.ui文件中选择button后右键 点击转到槽 可以自动生成该函数*/
{
    QString Account = ui->AccountInputbox->text();
    QString Password = ui->PasswordInputbox->text();

    if (Account.isEmpty()) {
        QMessageBox::warning(this, "输入错误", "请输入账号！");
        return;
    }

    if (Password.isEmpty()) {
        QMessageBox::warning(this, "输入错误", "请输入密码！");
        return;
    }

    /*创建数据模型*/
    Log = new QSqlTableModel;
    /*根据Log查询表*/
    Log->setQuery(QString("SELECT * FROM AccountPassword WHERE Account = '%1'").arg(Account));

    if (Log->rowCount() == 0) {
        QMessageBox::information(this, "查询结果", "请确认账号输入是否正确！");
        delete Log;
        return;
    }

    QSqlRecord record = Log->record(0);
    QString dbPassword = record.value("password").toString();

    if (dbPassword == Password) {
        QMessageBox::information(this, "成功", "登录成功");
    } else {
        QMessageBox::warning(this, "失败", "密码错误");
        return;
    }

        /* 现象 点击登录按键后产生的新窗口立马消失
         * 原因 这里生成的window1是一个局部变量 在所在的函数on_LoginButton_clicked();执行完成后就被释放了
         * 分析 这里是在栈空间创造的对象
         * 纠错 应该在堆空间创造对象
        WindowNum1 window1;
        window1.show();*/

    WindowNum1 *window1 = new WindowNum1;
    window1->show();

    this->close();
}

void Widget::on_CancelButton_clicked()
{
    this->close();
}

void Widget::on_RegisterButton_clicked()
{
    NewAccount *window2 = new NewAccount;
    window2->show();
}

